8 CLR 10 U$="[197][197][197][197][197][197][197][197][197][197]":O$="[164][164][164][164][164][164][164][164][164]" 110 POKE826,238:POKE827,0:POKE828,128:POKE829,96 200 PRINT"[147][164][164]";O$;O$;O$;O$:PRINT"SYNTAX-LEHRGANG 'MASCHINENSPRACHE' (7) 205 B$[178]"OPERATIONEN 210 PRINTO$;O$;O$;"[164][164][164][164][164]":PRINT"1.3.2. ARITHMETISCHE ";B$;"[146] (II) 220 [153]"WIR KENNEN BISHER DIE ARITHMETISCHEN 230 PRINTB$;" ADC UND SBC, ALSO ADDITION 240 [153]"UND SUBTRAKTION. BEIDE BEFEHLE WERDEN 250 PRINT"JEDOCH SELTEN BENOETIGT. VIEL HAEUFIGER 260 [153]"SIND VERGLEICHS";B$;", SOWIE IN- 270 PRINT"KREMENTIER- UND DEKREMENTIERBEFEHLE. 280 [153]"DIESE WERDEN WIR HEUTE KENNENLERNEN. 310 I=1:GOSUB5000:IFFLTHEN200 400 PRINT"[147]ES GIBT DREI VERGLEICHS";B$;": 410 [153]"CMP, CPX UND CPY. DER ERSTE BUCHSTABE C 420 PRINT"BEDEUTET BEI ALLEN DREIEN COMPARE, ALSO 430 [153]"'VERGLEICHE'. VERGLICHEN WERDEN ZWEI 440 PRINT"DATENWORTE (BYTES). DER VERGLEICHSVOR- 450 [153]"GANG BEEINFLUSST JEDOCH NUR DIE FLAGS, 460 PRINT"KEINE REGISTER.MAN KANN ALSO ANHAND DER 470 [153]"FLAGS FESTSTELLEN, WELCHES DER BEIDEN 480 PRINT"BYTE GROESSER WAR, ODER OB SIE GLEICH":PRINT"WAREN. 500 [153]"BEEINFLUSST WERDEN DAS N-,Z- UND C-FLAG 510 I=2:GOSUB5000:IFFLTHEN200 600 PRINT"[147]DAS IST WICHTIG! DENKEN SIE Z.B. AN DIE 610 [153]"FOR/NEXT-SCHLEIFE IN BASIC: AM ENDE JE- 620 PRINT"DES SCHLEIFENDURCHLAUFES WIRD EINE VER- 630 [153]"GLEICHSOPERATION DURCHGEFUEHRT, DIE DEN 640 PRINT"LAUFPARAMETER (MEIST I) MIT EINER VOR- 650 [153]"GEGEBENEN OBEREN GRENZE VERGLEICHT. JE 660 PRINT"NACH RESULTAT DES VERGLEICHS WIRD DIE 670 [153]"SCHLEIFE EIN WEITERES MAL DURCHLAUFEN 680 PRINT"ODER NICHT. UND DIE WICHTIGKEIT DER 690 [153]"FOR/NEXT-SCHLEIFE IST JA BEKANNT. 740 I=3:GOSUB5000:IFFLTHEN400 800 PRINT"[147][164][164][164]":PRINT"CMP[146]: COMPARE MEMORY AND ACCUMULATOR" 810 PRINT" [197] [197][197] 820 [153]"VOM AC WIRD DAS ADRESSIERTE BYTE SUB- 830 PRINT"TRAHIERT.DER BEFEHL CMP # $0F BERECHNET 850 [153]"ALSO DIE DIFFERENZ AC-$0F. 860 PRINT"DAS ERGEBNIS DIESER SUBTRAKTION STEHT 870 [153]"ABER IM GEGENSATZ ZU SBC ANSCHLIESSEND 880 PRINT"NICHT IM AC. ES TAUCHT AUCH IN KEINEM":PRINT"[197][197][197][197][197] 890 [153]"ANDEREN SPEICHER AUF! NUR DIE FLAS N,Z, 900 PRINT"UND C VERAENDERN ENTSPRECHEND DER SUB- 910 [153]"TRAKTION IHREN WERT. DER INHALT DES AC 920 PRINT"IST VOR UND NACH DEM BEFEHL CMP GLEICH. 930 I[178]4:[141]5000:[139]FL[167]600 1000 [153]"LOADTOTOTO":[153]"CPXWAIT: COMPARE MEMORY AND X-REGISTER 1010 PRINT" [197] [197]";SPC(15);"[197] 1020 A$[178]"DASSELBE WIE CMP, NUR WIRD DAS BYTE VOM":[153]A$ 1030 [153]"X";:B$[178]"R ANSTATT VOM AC SUBTRAHIERT.":[153]B$ 1040 [153]"TOTOTO":[153]"CPYWAIT: COMPARE MEMORY AND Y-REGISTER 1050 PRINT" [197] [197]";SPC(15);"[197]":PRINTA$:PRINT"Y";:PRINTB$ 1080 PRINT"AUCH DIE BEFEHLE CPX UND CPY BEEINFLUS- 1090 [153]"SEN NUR DIE FLAGS N/Z/C, NICHT JEDOCH 1100 PRINT"DEN INHALT DES XR ODER YR. 1130 I[178]5:[141]5000:[139]FL[167]800 1200 [153]"LOADDIE INKREMENTIERBEFEHLE:":[153]U$;U$;"VALVALVAL 1210 PRINT"[164][164][164]":PRINT"INC[146] INCREMENT MEMORY BY ONE":PRINT" [197][197][197] 1220 [153]"DER INHALT DES ADRESSIERTEN SPEICHERS 1230 A$="WIRD UM EINS ERHOEHT.":PRINTA$;:PRINT" Z.B. ERHOEHT DER 1240 [153]"BEFEHL INC $0123 DEN INHALT DES SPEI- 1250 PRINT"CHERS $0123 UM 1. AUS $00 WIRD $01, AUS 1260 [153]"$AA WIRD $AB, AUS $FF WIRD $00 (!). 1270 PRINT"[164][164][164]":PRINT"INX[146] INCREMENT XR BY ONE":PRINT" [197][197]";SPC(8);"[197] 1280 B$[178]"DER INHALT DES ":[153]B$;"XR ";A$ 1290 [153]"TOTOTO":[153]"INYWAIT INCREMENT YR BY ONE":[153]" VALVAL";[166]8);"VAL 1300 PRINTB$;"YR ";A$ 1320 I=6:GOSUB5000:IFFLTHEN1000 1400 PRINT"[147]ALLE DREI INKREMENTIER-BEFEHLE BEEIN- 1410 [153]"FLUSSEN DIE FLAGS N UND Z.DAS BEDEUTET: 1420 PRINT"WURDE DAS ADRESSIERTE BYTE, BZW. DAS XR 1430 [153]"ODER YR BEIM INKREMENTIEREN NULL (NE- 1440 PRINT"GATIV),SO WIRD DAS Z (N) -FLAG GESETZT. 1450 [153]"AUCH DAS INKREMENTIEREN IST UNS AUS DER 1455 PRINT"FOR/NEXT-SCHLEIFE WOHLBEKANNT: AM ENDE 1460 [153]"DES SCHLEIFENDURCHLAUFES WIRD DER LAUF- 1470 PRINT"INDEX AUTOMATISCH UM 1 ERHOEHT. 1510 I[178]7:[141]5000:[139]FL[167]1200 1600 [153]"LOADDIE DEKREMENTIERBEFEHLE":[153]U$;U$;"VALVALVAL 1610 PRINT"[164][164][164]":PRINT"DEC[146] DECREMENT MEMORY BY ONE":PRINT" [197][197][197] 1620 [153]B$;" ADRESSIERTEN SPEICHERS 1630 PRINT"WIRD UM EINS ERNIEDRIGT,Z.B. ERNIEDRIGT 1640 [153]"DER BEFEHL 'DEC $0123' DEN INHALT DES 1650 PRINT"SPEICHERS $0123 UM 1. AUS $AB WIRD $AA, 1660 [153]"AUS $01 WIRD $00, AUS $00 WIRD $FF (!). 1670 PRINT"[164][164][164]":PRINT"DEX[146] DECREMENT XR BY ONE":PRINT" [197][197]";SPC(8);"[197] 1680 [153]B$;"XR ";:A$[178]"WIRD UM 1 ERNIEDRIGT.":[153]A$ 1690 [153]"TOTOTO":[153]"DEYWAIT DECREMENT YR BY ONE":[153]" VALVAL";[166]8);"VAL 1700 PRINTB$;"YR ";:PRINTA$ 1710 I=8:GOSUB5000:IFFLTHEN1400 1800 PRINT"[147]EBENSO WIE DIE INKREMENTIERBEFEHLE BE- 1810 [153]"EINFLUSSEN DIE DEKREMENTIERBEFEHLE NUR 1820 PRINT"DIE FLAGS N UND Z. DIE DEKREMENTIERBE- 1830 [153]"FEHLE SIND ALSO DIE GENAUE UMKEHRUNG 1840 PRINT"DER INKREMENTIERBEFEHLE. 1850 [153]"DENKEN SIE AN FOR/NEXT-SCHLEIFEN MIT 1855 PRINT"'STEP-1', DANN WIRD IHNEN DIE BEDEUTUNG 1860 [153]"DER DEKREMENTIERBEFEHLE KLAR. 1910 I=9:GOSUB5000:IFFLTHEN1600 2000 PRINT"[147]BEISPIELE:":PRINTU$ 2005 PRINT"1. ES MAG ZUERST UNSINNIG ERSCHEINEN, 2010 [153]"DASS BEI CMP/CPX/CPY DAS SUBTRAKTIONS- 2015 PRINT"ERGEBNIS VERLOREN GEHT. DA DADURCH ABER 2020 [153]"DAS ZU VERGLEICHENDE BYTE IM AC (XR,YR) 2030 PRINT"ERHALTEN BLEIBT,KANN MAN BELIEBIG VIELE 2040 [153]"SOLCHE VERGLEICHE DIREKT HINTEREINANDER 2050 PRINT"DURCHFUEHREN, OHNE DAS ZU VERGLEICHENDE 2055 [153]"BYTE STETS WIEDER NEU IN DEN AC (XR,YR) 2060 PRINT"LADEN ZU MUESSEN. 2110 I[178]10:[141]5000:[139]FL[167]1800 2200 [153]"LOAD2. NEBEN DEM VERLUST DES ERGEBNISSES 2210 PRINT"UNTERSCHEIDEN SICH CMP UND SBC NOCH IM 2220 [153]"VERHALTEN AUF DES C-FLAG: VOR CMP MUSS 2230 PRINT"DAS C-FLAG NICHT GESETZT WERDEN. 2240 [153]"3. ALS SCHLEIFENZAEHLER VERWENDET MAN 2250 PRINT"MEIST DAS XR ODER DAS YR. DIE BEFEHLE 2260 [153]"INX/INY BZW. DEX/DEY MACHEN DAS ZAEHLEN 2270 PRINT"MIT DIESEN INDEXREGISTERN BESONDERS 2280 [153]"EINFACH. 2310 I=11:GOSUB5000:IFFLTHEN2000 2400 PRINT"[147]AUFGABEN:":PRINTU$ 2410 PRINT"1. WAS FUER EINE ADRESSIERUNGSART HABEN 2420 [153]"DIE BEFEHLE INX/INY/DEX/DEY STETS? 2430 PRINT"2. WIEVIELE BYTE HABEN SIE DAHER STETS? 2440 [153]"3. IM AC STEHE DAS DATENWORT $01. WEL- 2450 PRINT"CHES FLAG WIRD DURCH DEN FOLGENDEN BE- 2460 [153]"FEHL GESETZT: CMP # $01 ? 2470 PRINT"4. UND WELCHES,WENN DER AC $00, WELCHES 2480 [153]"WENN ER $02 ENTHAELT ? 2510 I=12:GOSUB5000:IFFLTHEN2200 2600 PRINT"[147]5. DIE AUFGABEN 3 UND 4 SIND WICHTIG. 2620 [153]"FALLS SIE SIE NICHT BEARBEITET HABEN, 2630 PRINT"BLAETTERN SIE NOCHMAL ZURUECK! 2640 [153]"6. DER SPEICHER $8000 ENTHAELT DAS ZEI- 2650 PRINT"CHEN IN DER LINKEN OBEREN BILDSCHIRM- 2660 [153]"ECKE. SCHREIBEN SIE EIN PROGRAMM, DAS 2670 PRINT"DIESEN SPEICHER INKREMENTIERT.VERGESSEN 2680 [153]"SIE NICHT RTS! RUFEN SIE ES MEHRFACH 2690 PRINT"HINTEREINANDER AUF UND BEOBACHTEN SIE 2700 [153]"DEN BILDSCHIRM. 2710 I=13:GOSUB5000:IFFLTHEN2400 2800 PRINT"[147]A 2805 [153]"DIE LOESUNG VON AUFGABE 6 STEHT AB 826 2810 PRINT"IM RAM. SIE KOENNEN SIE AUFRUFEN. 2820 [153]"ZUR DEMONSTRATION FUEHREN WIR SIE IHNEN 2830 PRINT"VOR. BEACHTEN SIE DIE LINKE OBERE BILD- 2840 [153]"SCHIRMECKE! 2842 FORW=0TO10000:NEXT 2850 FORI=0TO255 2860 SYS826 2870 FORW=0TO150 2880 NEXTW,I 2910 PRINT" - SEITE 14 - <+> [145][164][164][164][164][157][157][157][157]ENDE[146] <-> VON VORNE"; 3060 GOSUB5020:ONFLGOTO0:PRINT"[147]":END:RUN 5000 REM UMBLAETTERN 5010 PRINT" - SEITE";I;"- <+> WEITER <-> ZURUECK"; 5020 FORI=0TO11:GETX$:NEXT 5030 GETX$:IFX$=""THEN5030 5040 IFX$="+"THENFL=0:RETURN 5050 IFX$="-"THENFL=1:RETURN 5060 GOTO5030